home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.image;
-
- import java.util.Vector;
-
- class ImageFetcher extends Thread {
- static Thread[] fetchers = new Thread[1];
- static final int HIGH_PRIORITY = 8;
- static final int LOW_PRIORITY = 3;
- private static Vector waitList;
-
- private static ThreadGroup getImageFetcherThreadGroup() {
- Thread var0 = Thread.currentThread();
-
- for(var2 = var0.group; var2.parent != null; var2 = var2.parent) {
- ThreadGroup var1 = var2.parent;
- if (var1.parent == null) {
- break;
- }
- }
-
- return var2;
- }
-
- private ImageFetcher() {
- super(getImageFetcherThreadGroup(), "Image Fetcher");
- }
-
- public static void add(ImageFetchable var0) {
- Vector var1 = waitList;
- synchronized(var1){}
-
- try {
- Vector var3 = waitList;
- if (var3.indexOf(var0, 0) < 0 && true) {
- waitList.addElement(var0);
- waitList.notify();
- }
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
-
- public static boolean isFetcher(Thread var0) {
- for(int var1 = 0; var1 < fetchers.length; ++var1) {
- if (fetchers[var1] == var0) {
- return true;
- }
- }
-
- return false;
- }
-
- public static boolean amFetcher() {
- return isFetcher(Thread.currentThread());
- }
-
- private static ImageFetchable nextImage() {
- Vector var0 = waitList;
- synchronized(var0){}
-
- ImageFetchable var9;
- try {
- ImageFetchable var2 = null;
-
- while(var2 == null) {
- Vector var3 = waitList;
- if (var3.elementCount != 0) {
- var2 = (ImageFetchable)waitList.elementAt(0);
- waitList.removeElement(var2);
- } else {
- try {
- var3 = waitList;
- var3.wait(0L);
- } catch (InterruptedException var6) {
- System.err.println("Image Fetcher interrupted!");
- }
- }
- }
-
- var9 = var2;
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var9;
- }
-
- public void run() {
- while(true) {
- Thread.currentThread().setPriority(8);
- ImageFetchable var1 = nextImage();
-
- try {
- var1.doFetch();
- } catch (Exception var3) {
- System.err.println("Uncaught error fetching image:");
- ((Throwable)var3).printStackTrace();
- }
- }
- }
-
- static {
- for(int var0 = 0; var0 < fetchers.length; ++var0) {
- Thread var1 = fetchers[var0] = new ImageFetcher();
- var1.setName(var1.getName() + " " + var0);
- var1.setDaemon(true);
- var1.start();
- }
-
- waitList = new Vector();
- }
- }
-